package org.hcf.api.tencent.api;

import lombok.Data;
import org.hcf.api.tencent.callback.info.group.base.GroupAt;
import org.hcf.api.tencent.callback.info.group.base.MessageBody;
import org.hcf.api.tencent.api.base.OfflinePush;

import java.util.List;

@Data
/** 在群组中发送普通消息 */
public class GroupChatMsg {
    /** 向哪个群组发送消息。 */
    String GroupId;
    /** 消息来源账号，选填。如果不填写该字段，则默认消息的发送者为调用该接口时使用的 App 管理员账号。除此之外，App 亦可通过该字段“伪造”消息的发送者，从而实现一些特殊的功能需求。需要注意的是，如果指定该字段，必须要确保字段中的账号是存在的，该账号可以不是群成员。 */
    String From_Account;
    /** 指定消息接收者(接收者成员上限50个)，如果此字段被使用，消息则不计未读，仅旗舰版支持此功能，支持好友工作群（Work）、陌生人社交群（Public）、临时会议群（Meeting）。 */
    String To_Account;
    /** 无符号32位整数（取值范围：0 - 4294967295）。如果5分钟内两条消息的内容和 Random 随机值都相同的情况下，后一条消息将被当做重复消息而丢弃。 */
    int Random;
    /** 1表示消息仅发送在线成员，默认0表示发送所有成员，AVChatRoom(直播群)不支持该参数 */
    int OnlineOnlyFlag;
    /** 消息的优先级。High、Normal、Low 默认优先级 Normal */
    String MsgPriority;
    /** 消息体 */
    List<MessageBody> MsgBody;
    /** 话题的 ID，若具有此选项表示在对应的话题中发送普通消息，仅支持话题的社群适用此选项。 */
    String TopicId;
    /** 该条消息是否需要已读回执，0为不需要，1为需要，默认为0。 */
    int NeedReadReceipt = 1;
    /** 该条消息的@信息。GroupAtAllFlag 为1表示 @all, 为0表示@的具体的成员，GroupAt_Account 表示 @的具体成员 */
    GroupAt GroupAtInfo;
    /** 离线推送信息配置，详细可参阅 消息格式描述。 */
    OfflinePush OfflinePushInfo;
    /** 消息回调禁止开关，只对单条消息有效，ForbidBeforeSendMsgCallback 表示禁止发消息前回调，ForbidAfterSendMsgCallback 表示禁止发消息后回调 */
    List<String> ForbidCallbackControl;
    /** 消息发送权限，NoLastMsg 只对单条消息有效，表示不更新最近联系人会话；NoMsgCheck表示开启云端审核后，该条消息不送审；NoUnread 不计未读，只对单条消息有效。（如果该消息 OnlineOnlyFlag 设置为1，则不允许使用该字段。） */
    List<String> SendMsgControl;
    /** 消息自定义数据（云端保存，会发送到对端，程序卸载重装后还能拉取到）。 */
    String CloudCustomData;
    /** 该条消息是否支持消息扩展，0为不支持，1为支持。 */
    int SupportMessageExtension;

}
